<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<!-- 루트 컨텍스트; 다른 모든 웹 컴포넌트에서 참조 가능한 공유 자원을 정의한다. -->
	
	<!-- 세션을 이용한 지역화 리졸버로 defaultLocale 속성을 통해 초기 지역을 지정할 수 있다. -->
	<bean id="localeResolver"
		class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
		<property name="defaultLocale" value="ko" />
	</bean>
	
	<!-- 지역화 변경 인터셉터로 지역화 설정을 변경할 수 있는 파라메터를 가로채 지역화 정보를 변경한다. -->
	<bean id="localeChangeInterceptor"
		class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
		<property name="paramName" value="lang" />
	</bean>
	
	<!-- 지역화 정보에 따른 메시지를 관리하는 메시지 소스 빈으로 properties 파일을 통해 메시지를 관리한다. -->
	<bean id="messageSource"
		class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
		<property name="basename" value="classpath:i18n/messages" />
		<property name="defaultEncoding" value="UTF-8" />
	</bean>
	
	<!-- Spring Bean에 대한 유효성 검증을 담당한다. -->
	<bean id="validator"
		class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
		<property name="messageInterpolator">
			<bean class="devcken.validation.ValidatorResourceMessageInterpolator"></bean>
		</property>
	</bean>
	
	<!-- 열거자(enum) 어노테이션 기반의 공통 코드 태그 로더로 지정한 패키지 범위 내의 열거자들을 대상으로 한다. -->
	<bean id="enumerationTagLoader"
		class="devcken.taglibrary.EnumerationTagLoader"
		init-method="load">
		<property name="base" value="com.nts"></property>
		<property name="messageSource" ref="messageSource"></property>
		<property name="localeResolver" ref="localeResolver"></property>
	</bean>
	
	<!-- DateTime 타입의 변수에 대한 포맷을 제공한다. -->
	<bean id="dateTimeFormatter"
		class="devcken.text.DateTimeFormatter">
		<property name="defaultDateFormat" value="MM월 dd일, yyyy년"/>
		<property name="shortDateFormat" value="MM/dd/yyyy"/>
		<property name="longDateFormat" value="MM/dd/yyyy hh:mm:ss"/>
	</bean>
	
	<!-- 목록 데이터에 대한 페이지 매김을 위한 지시자를 설정한다. -->
	<bean id="paginationDirector"
		class="devcken.hibernate.query.PaginationDirector">
		<property name="defaultSizes">
			<map key-type="java.lang.String" value-type="java.lang.Integer">
				<entry key="PAGINATION_CONTENTS_PACKAGE_PAGE_SIZE" value="20"></entry>
			</map>
		</property>
	</bean>
		
</beans>